package com.qms.qep.mapper;

import java.util.List;
import java.util.Map;
import com.qms.qep.domain.RepairTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 维修任务Mapper接口
 * 
 * @author qms
 */
@Mapper
public interface RepairTaskMapper 
{
    /**
     * 查询维修任务
     * 
     * @param id 维修任务主键
     * @return 维修任务
     */
    public RepairTask selectRepairTaskById(Integer id);

    /**
     * 查询维修任务列表
     * 
     * @param repairTask 维修任务
     * @return 维修任务集合
     */
    public List<RepairTask> selectRepairTaskList(RepairTask repairTask);

    /**
     * 新增维修任务
     * 
     * @param repairTask 维修任务
     * @return 结果
     */
    public int insertRepairTask(RepairTask repairTask);

    /**
     * 修改维修任务
     * 
     * @param repairTask 维修任务
     * @return 结果
     */
    public int updateRepairTask(RepairTask repairTask);

    /**
     * 删除维修任务
     * 
     * @param id 维修任务主键
     * @return 结果
     */
    public int deleteRepairTaskById(Integer id);

    /**
     * 批量删除维修任务
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRepairTaskByIds(Integer[] ids);
    
    /**
     * 根据不合格品ID查询维修任务
     *
     * @param nonconformingId 不合格品ID
     * @return 维修任务
     */
    public RepairTask selectRepairTaskByNonconformingId(Integer nonconformingId);
    
    /**
     * 统计维修任务数量
     *
     * @param repairTask 维修任务
     * @return 结果
     */
    public int countRepairTask(RepairTask repairTask);

    /**
     * 获取维修率统计总结
     *
     * @param params 查询参数
     * @return 维修率统计总结
     */
    public Map<String, Object> getRepairRateSummary(Map<String, Object> params);
    
    /**
     * 按产品获取维修率
     *
     * @param params 查询参数
     * @return 产品维修率列表
     */
    public List<Map<String, Object>> getRepairRateByProduct(Map<String, Object> params);
    
    /**
     * 按批次获取维修率
     *
     * @param params 查询参数
     * @return 批次维修率列表
     */
    public List<Map<String, Object>> getRepairRateByBatch(Map<String, Object> params);
    
    /**
     * 按缺陷类型统计维修率
     *
     * @param params 查询参数
     * @return 缺陷类型维修率列表
     */
    public List<Map<String, Object>> getRepairRateByDefectType(Map<String, Object> params);
    
    /**
     * 获取维修成本统计总结
     *
     * @param params 查询参数
     * @return 维修成本统计总结
     */
    public Map<String, Object> getRepairCostSummary(Map<String, Object> params);
    
    /**
     * 按缺陷类型获取维修成本
     *
     * @param params 查询参数
     * @return 缺陷类型维修成本列表
     */
    public List<Map<String, Object>> getRepairCostByDefectType(Map<String, Object> params);
    
    /**
     * 获取月度维修成本统计
     *
     * @param params 查询参数
     * @return 月度维修成本列表
     */
    public List<Map<String, Object>> getRepairCostByMonth(Map<String, Object> params);
    
    /**
     * 获取维修效果评估总结
     *
     * @param params 查询参数
     * @return 维修效果评估总结
     */
    public Map<String, Object> getRepairEvaluationSummary(Map<String, Object> params);
    
    /**
     * 按缺陷类型获取维修效果评估
     *
     * @param params 查询参数
     * @return 缺陷类型维修效果评估列表
     */
    public List<Map<String, Object>> getRepairEvaluationByDefectType(Map<String, Object> params);
    
    /**
     * 获取维修合格率趋势
     *
     * @param params 查询参数
     * @return 维修合格率趋势列表
     */
    public List<Map<String, Object>> getRepairQualificationTrend(Map<String, Object> params);
    
    /**
     * 获取产品维修记录
     *
     * @param productId 产品ID
     * @return 产品维修记录列表
     */
    public List<Map<String, Object>> getProductRepairRecords(@Param("productId") Integer productId);
    
    /**
     * 获取批次维修记录
     *
     * @param batchId 批次ID
     * @return 批次维修记录列表
     */
    public List<Map<String, Object>> getBatchRepairRecords(@Param("batchId") Integer batchId);
    
    /**
     * 获取缺陷相关维修记录
     *
     * @param defectId 缺陷ID
     * @return 缺陷相关维修记录列表
     */
    public List<Map<String, Object>> getRepairRecordsByDefectId(@Param("defectId") Integer defectId);
    
    /**
     * 根据产品ID获取维修记录
     *
     * @param productId 产品ID
     * @return 维修记录列表
     */
    public List<Map<String, Object>> getRepairRecordsByProductId(@Param("productId") Integer productId);
    
    /**
     * 根据批次ID获取维修记录
     *
     * @param batchId 批次ID
     * @return 维修记录列表
     */
    public List<Map<String, Object>> getRepairRecordsByBatchId(@Param("batchId") Integer batchId);
} 